package com.kexio.user.service;

import java.util.List;

/**
 * 权限版本管理服务
 * 
 * 提供权限版本号的自动化管理，确保前端能及时检测到权限变化
 * 
 * @author Kexio Team
 * @since 1.0.0
 */
public interface PermissionVersionService {
    
    /**
     * 用户角色变更时更新权限版本
     * 
     * 应在以下场景调用：
     * - 用户分配新角色
     * - 用户移除角色
     * 
     * @param userId 用户ID
     * @return 是否更新成功
     */
    boolean onUserRoleChanged(String userId);
    
    /**
     * 角色权限变更时批量更新用户版本
     * 
     * 应在以下场景调用：
     * - 角色权限新增/删除
     * - 角色菜单变更
     * 
     * @param roleId 角色ID
     * @return 受影响的用户数量
     */
    int onRolePermissionChanged(String roleId);
    
    /**
     * 菜单变更时批量更新用户版本
     * 
     * 应在以下场景调用：
     * - 菜单新增/删除/修改
     * - 菜单权限变更
     * 
     * @param menuId 菜单ID
     * @return 受影响的用户数量
     */
    int onMenuChanged(String menuId);
    
    /**
     * 批量递增多个用户的权限版本
     * 
     * @param userIds 用户ID列表
     * @return 成功更新的用户数量
     */
    int batchIncrementVersion(List<String> userIds);
}

